Record and replay is a technique that allows the execution of a software application to be recorded so that it can be played back at a later time and often in a different system environment. Record and replay is commonly used for performance testing in software development. In a client-server environment, record and replay performance test tools need to be concerned with the various protocols that the client and the server use to communicate with each other. In addition to the complexity and changing nature of communication protocols, each protocol typically has a unique set of requirements and interface components through which it interacts with the operating system. A record and replay performance test tool must support these unique requirements and work with the protocol interfaces in order to properly record and replay the execution of the application.
In a client-server environment, the client and the server can communicate with each other using one or more protocols like the Hypertext Transfer Protocol (HTTP), Java Remote Method Protocol (JRMP), Internet Inter-ORB Protocol (IIOP), Simple Object Access Protocol (SOAP), and Common Object Model (COM). The services associated with these protocols can be implemented in numerous ways, which make it difficult to have a single record and replay performance test tool that works with the different protocol implementations. In addition, the architecture of a client-server application varies from one operating environment to another depending on the type of the application. As a result, performance testing in such a client-server environment with a performance tool generally involves recording and replaying the actions that a user performs and the resulting processes.
Current recording tools typically provide a recording in a performance test either by using a proxy to intercept the user requests or creating client requests on the fly based on the user requests and the service definition language involved. Input to the program being recorded is sent through this proxy. The proxy examines client request and server response messages to capture the data that will be required for a replay of the program execution. In particular, the tool must examine network packets to extract relevant information and map this information to corresponding protocol messages being exchanged by the client and the server.
In a second type of record and replay tools, the tools must be able to recognize the service definition language being used in the communication between the client and the server and the operations defined by the service implementation of the respective communication protocol. Examples of the service definition languages include the Web Service Definition Language (WSDL) and the Interface Description Language (IDL). The tools then simulate client applications on the fly based on the client-server operation data that it captured.
A drawback of the above recording techniques is that the recording tools cannot be reused among the various protocols that the client and server use to communicate with each other because the interfaces and definitions are implemented differently in the protocols. In addition, the capturing of network packets during a client-server communications and mapping them to a particular protocol implementation will not work in all situations due to variations in the implementations of the underlying protocols.
For the recording performance test tools that are based on the service definition languages, tool developers face another challenge in the fact that not all applications and services use a definition language that allows data to be captured by the performance tools. In addition, this recording technique is more aligned towards Web services or Simple Object Access Protocol-based applications and generally cannot be applied to other types of service applications. As a result, with the emerging new client-server technologies, these performance test tools must be regularly updated with multiple recorders or protocol adapters that support new communication protocols and service implementations in order to be useful.
From the foregoing, it is appreciated that there still exists a need for a common record and replay performance test tool that is capable of recording a program execution and playing it back in different environments without the aforementioned drawbacks.